package com.xbongbong.pro.statistic.result.pojo.dto;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.toolbox.wrap.QueryIgnore;
import com.xbongbong.pro.statistic.result.pojo.ChartIdPojo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;

/**
 * 获取图表结果请求参数
 * @author zcp
 * @date 2019/2/13 13:42
 * @since v1.0
 * @version v1.0
 */
@Getter
@Setter
@ToString
public class ChartResultDTO extends ChartResultBaseDTO {
    private static final long serialVersionUID = 3595963432003707341L;
    /**
     * pk榜是否处理部门
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Boolean pkShowDep = false;
    /**
     * 获取前top个排名，不传则获取全部。比如首页只展示前3个，图表中心全部
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer top;

    /**
     * 1员工pk，2部门pk。默认为1
     */
    @Range(min = 0, max = 2, message="pk类型错误")
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer pkType = 1;

    /**
     * 方案id，部门pk时必传
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Long departmentPkId;
    /**
     * 查询条件
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private List<JSONObject> search;

    /**
     * 排序字段{"field":"updateTime","sort":"acs"}
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Map<String,String> sortMap;

    /**
     * 排序字段｛"num_1": "asc", "num_2" :"desc"｝
     * 与sortMap区分开，与已有逻辑区分，用于统计表、统计图等类型
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Map<String,String> sortStatisticsMap;

    /**
     * 排序字段的顺序：sortStatisticsMap接收到的数据可能是乱的，并且如果修改的话前后端已有逻辑改动较大，因此新加一个参数只用来记录排序字段的顺序
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private List<String> sortFieldOrder;

    /**
     * 产品分类
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Long selectCategoryId;

    /**
     * 是否在翻页 0否  1 是
     */
    private Integer pageTurn;
    /**
     * 第二页开始由前端返回总数，不再查询
     */
    private Integer rowsCount;
    /**
     * 资金账户id
     */
    private Long accountId;

    /**
     * 图表中心筛选表单id
     */
    private Long formId;

    /**
     * 图表中心》经销商管理》发货分析:1、按订单；0、按产品
     **/
    private Integer byOrder;
    /**
     * 类型
     */
    private Integer type;
    /**
     * 地图穿透信息
     */
    private JSONArray map;

    /**
     * 分类id
     */
    private Long chartCategoryId;

    /**
     * 数值格式值
     */
    private Integer numFormat;

    /**
     * 首页pk `展示全公司top3`  0-开 ， 1-关
     */
    private Integer top3Switch;

    /**
     * 图表联动相关入参
     */
    private JSONObject linkage;

}
